home *** CD-ROM | disk | FTP | other *** search
-
- #include "Directory.h"
-
- const RJS_Status RJS_Directory::NoDirSpecified("no directory specfied");
-
- RJS_Directory::RJS_Directory()
- {
- ss_set(NoDirSpecified);
- }
-
- RJS_Directory::~RJS_Directory()
- {
- closedir(dir);
- }
-
- RJS_Directory::RJS_Directory(const RJS_String &path,DirFmt fmt)
- {
- set(path,fmt);
- }
-
- int RJS_Directory::set(const RJS_String &path,DirFmt fmt)
- {
- dirname=path;
- if (dirname.right(1)!='/') dirname += '/';
- dirfmt = fmt;
- dir = opendir(path.cptr());
- if (!dir) {
- ss_set(RJS_Status(errno));
- return 0;
- } else {
- ss_set(SS_success);
- return 1;
- }
- }
-
- int RJS_Directory::done()
- {
- struct direct *dp=readdir(dir);
- return (int) dp;
-
- }
- int RJS_Directory::next(RJS_String &name)
- {
- struct direct *dp=readdir(dir);
-
- if (dp) {
- name = dp->d_name;
- if (dirfmt==FullPath) name = dirname+name;
- return 1;
- } else {
- name = "";
- return 0;
- }
- }
-
- long RJS_Directory::position()
- {
- return telldir(dir);
- }
-
- void RJS_Directory::moveto(long pos)
- {
- seekdir(dir,pos);
- ss_set(SS_success);
- }
-
- void RJS_Directory::reset()
- {
- rewinddir(dir);
- ss_set(SS_success);
- }
-
- int RJS_Directory::number()
- {
- struct direct *dp;
- int num=0;
- rewinddir(dir);
- while (dp=readdir(dir)) num++;
- return num;
- }
-